package com.dxf.chepter08

import scala.collection.mutable
import scala.collection.mutable.ListBuffer

/**
 *
 *  Queue 队列 :
 *   1 队列是一个有序列表 ,底层可以用数据或者链表来实现
 *   2 遵循先入先出
 *   3 scala中使用作者提供的队列,或者自己实现
 *   4 scala中的队列分 scala.collection.mutable.Queue 和 immutable.Queue,一般来说,我们在开发中通常使用可变集合中的队列
 *   5 queue默认是加在尾部的
 *
 *   val q1 = new mutable.Queue[Int]
 *
 */
object T87_Queue {


  def main(args: Array[String]): Unit = {
    val q1 = new mutable.Queue[Int]
    println(q1) //Queue()

    q1 += 20
    println(q1) //Queue(20)

    q1 ++= List(2, 4, 6) //Queue(20, 2, 4, 6)
    println(q1)

    //出队列
    q1.dequeue()
    println("dequeue=" + q1)

    //入队列
    q1.enqueue(12)
    println("enqueue=" + q1)

    println("==================================")

    println(q1.head) //队列第一个元素 ,对 q1没有任何影响
    println(q1.last) //最后一个,对 q1没有任何影响
    //返回除了第一个以外的剩余元素
    println(q1.tail)

    println(q1.tail.tail)
    println(q1.tail.tail.tail)
    println(q1.tail.tail.tail.tail)
  //  println(q1.tail.tail.tail.tail.tail) 队列空了后,再tail 会报错


    println("==================================")
    //  q1 += List(5)  是 加入 队列中一个集合  List(5)   ,泛型必须是Any
    // println(q1)
    val cat005 = new Cat005
    cat005 + 10
    cat005.+(2)
    println(cat005.age)

  }


}

class Cat005 {
  var age = 0

  //操作符的重载
  def +(n: Int): Unit = {
    this.age += n
  }

}

